package com.wangyf.thread.c_008_unsafe;

import sun.misc.Unsafe;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 查看unsafe类是否可以使用
 * @author wangyf
 * @date 2021/1/2 17:32
 * 在1.8中还无法获取，jdk11是可以使用的，
 * 那么unsafe到底如何操作的呢
 */
public class T {
    public static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(0);
        Unsafe unsafe = Unsafe.getUnsafe();
        // 以这个方法来说明的话，
        // 参数1: 操作哪个对象
        // 参数2: 偏移量，也就是可以让java代码直接像C++一样直接操作内存
            // 比如 atomicInteger的value是存在第16位，也就是传16 直接修改值
        // 参数3：期望值
        // 参数4：需要更新成为的那个值
        // 返回值：是否修改成功

        boolean b = unsafe.compareAndSwapInt(atomicInteger, 0, 0, 1);
        System.out.println(b);
        System.out.println(atomicInteger);
    }
}
